perm filename CSCOPY[1,RWF] blob sn#790293 filedate 1985-03-26 generic text, type T, neo UTF8
∂26-Mar-85  0907	RFN  
@begin(Text,LeftMargin 1in, RightMargin 1in, Spacing 1)

@Modify(Enumerate, RightMargin +0, NumberLocation LFL,
	LeftMargin +0.4 cm, Indent -0.4 cm)

@SpecialFont(F0=Helvetica12)
@SpecialFont(F1=Helvetica11)
@SpecialFont(F2=Helvetica10)

@begin(MajorHeading)
COMPUTER SCIENCE
@end(MajorHeading)

@begin(Text, Indent -0.4cm, LeftMargin +0.4cm)

@i[Chairman:]  Nils J. Nilsson

@i[Assistant Chairman for Undergraduate Education:]
  Stuart T. Reges

@i[Professors:]  Germund Dahlquist, George B. Dantzig (Emeritus)
  Edward A. Feigenbaum, Robert W. Floyd, Gene H. Golub,
  Leonidas J. Guibas, John G. Herriot (Emeritus),
  Donald E. Knuth, Zohar Manna, John McCarthy,
  Edward J. McCluskey, William F. Miller, Nils J. Nilsson,
  Christos H. Papadimitriou,
  Vaughan Pratt, Jeffrey D. Ullman, James H. Wilkinson, Andrew Yao

@i[Professors (Research):]  Thomas Binford, Bruce G. Buchanan,
    Arthur Samuel (Emeritus)

@i[Associate Professors:]  Joseph E. Oliger,
    Terry Winograd 

@i[Associate Professor (Research):]  Gio Wiederhold

@i[Associate Professor (Teaching):]  Charles A. Bigelow

@i[Assistant Professors:] David Cheriton, Michael Genesereth,
 Manolis G. H. Katevenis,
Keith A. Lantz, Ernst Mayr, Paul Rosenbloom

@i[Courtesy Associate Professor:]  Edward H. Shortliffe

@i[Courtesy Assistant Professor:]  Brian K. Reid (Electrical 
Engineering)

@i[Affiliated Associate Professors:] John T. Gill, III (Electrical
Engineering),
John Hennessy (Electrical
 Engineering), Susan S. Owicki (Electrical Engineering), Fouad Tobagi
 (Electrical Engineering)

@i[Affiliated Professor (Research):]   David Luckham (Electrical Engineering)

@i[Consulting Professor:] Forest Baskett

@i[Consulting Associate Professor:]  Richard P. Gabriel

@i[Center for the Study of Language and Information:]
@Begin(Display)
@Tabset(.50 inch) 
@>@i[Consulting Professor:]  Martin Kay
@>@i[Consulting Associate Professors:] Barbara J. Grosz, 
Robert C. Moore,
@>Raymond Perrault, Stanley J. Rosenschein, Brian C. Smith
@End(Display)
@i[Industrial Lectureship:]  Daniel Bobrow, Johann de Kleer, Kenneth Kahn
Sanjay Mittal, Fernando Pereira, Mark Stefik, John Williams

@end(text)
@comment(End of hanging indent mode)

!@begin(Text, Indent +0.6cm)

@begin(Heading)
OFFERINGS AND
FACILITIES
@end(Heading)
A variety of computer systems are available to Stanford students. There
are two large systems available to all students in the University.
Most courses, including courses given by the Computer Science Department,
use the Low Overhead Timesharing System (LOTS).  A few courses and many
sponsored research projects use Information Technology Services (ITS).

There are three large systems available to students of Computer Science:
Score, SAIL, and SUMEX.  Each of these systems is a host on the
nation-wide ARPAnet computer research network; each is also a
host on the experimental ethernet (SUNet) operated by the department.

Score is a DECSYSTEM-2060 running the TOPS-20 operating system.  It
includes 2048K words of main memory and 2.2 billion bytes of online
storage.  Score is predominantly used for departmental research.

SAIL is a DECsystem-1080 running the WAITS timesharing operating system.
SAIL supports 64 local display consoles, plus other local and remote terminals.
The SAIL facility includes two central processors, 2304K words of main memory,
and 1.6 billion bytes of disk storage.  
SAIL is operated by the Computer Science Department.  Users include
members of the Electrical Engineering, Mechanical Engineering,
Mathematics, and Psychology Departments.

SUMEX is a national resource, funded by the National Institutes of Health,
for core research on knowledge-based systems and applications of
artificial intelligences to biomedicine.  SUMEX operates a large
DECSYSTEM 2060, a 2020, a VAX 11/78, and more than fifteen personal
Lisp machines.  Students doing research in appropriate areas may be
granted access to SUMEX.

The Computer Science Department also operates several Xerox Alto personal 
computers, linked together by the Ethernet communications network.  
Xerox has provided these Altos, a Dover printer, and a network file system, as
an equipment grant to the Computer Science Department.

The departmental policy on providing computer access to its students is
flexible and evolving.  At present, PhD students are generally offered
accounts on Score, SAIL, and the Altos and unsupported Masters students
are offered Score accounts.

The VAX 11/780 called Navajo is used for research in large-scale numerical
problems and for some general departmental use. There are other VAX computers
associated with specific research projects.

In addition to these systems, various other facilities are present in the
department.  Amoung these are a variety of Hewlett-Packard systems, and
several kinds of personal work stations.

The department conducts a weekly colloquium (Computer Science 500)
presented by the staff and visiting scientists,
which covers a spectrum of current topics.  A
lecture series (Computer Science 300) is offered during
autumn quarter and is presented for new students at which
members of the department speak informally on their research
interests and their views on the nature of
computer science.

!@begin(Heading)
PROGRAMS OF STUDY
@end(Heading)
@begin(Center)
@F0[MASTER OF SCIENCE]
@end(Center)

  The University's basic requirements for the
Master of Science degree are discussed in the section
"Degrees" in this bulletin.  The department 
offers two programs, the M.S. in Computer Science (CSMS)
and the M.S. in Computer Science: Artificial Intelligence (CSAI).
The CSAI program differs from the standard CSMS program (in particular from
Specialization~5 -- Symbolic and Heuristic Computation) in that it is a two-year
program emphasizing practical system-building experience. Applicants need to
indicate which program they wish to pursue; it is not possible to apply to
both at the same time.

@begin(Center)@begin[F1]
MASTER OF SCIENCE IN
COMPUTER SCIENCE
@end[F1]@end(Center)

   The degree "Master of Science in Computer Science" (CSMS) is intended
as a professional degree and does not lead to the Ph.D. degree.  Students 
planning to obtain the Ph.D. degree should apply directly for admission 
to the Ph.D. program.

   Applications for admission to the Master of Science program must be received
by January 1.  Exceptions are made for applicants to the CSMS program who are 
either Honors Coop applicants or who are already students at Stanford.
These applications will be considered each quarter for the next.  Information 
on deadlines is available from the department.

!@begin(Center)@begin[F2]
PROGRAM REQUIREMENTS
@end[F2]@end(Center)


      A candidate is required to complete a course program
        of 42 units.  At least 36 of these must be 
        graded units, passed with a 3.0 (B) average or better.
        The 42 units may include no more than 18 units from courses listed
        in Requirements 1 and 2.  This means that students needing to take
        more than six of the courses listed in Requirements 1 and 2
        will actually complete more than 42 units
        of course work in this program.  Students hoping to complete
        the program with 42 units should already have a good background
        in computer science including course work or experience
        equivalent to all of Requirement 1 and some of the
        courses listed in Requirement 2.

@begin(enumerate)
     The following courses may need to be scheduled as they are prerequisites
     for other courses in the program: 
     CS 108A, CS 108B, CS 108C, CS 112; CS 22 (for Specialization 5 only).

     The following core courses or their equivalents must be completed:
        CS 212; CS 223A; CS 237A; CS 242; CS 243; CS 246; CS 254 or CS 257A;
        CS 261; MATH 120 or MATH 120S.  Courses will be
	waived only if evidence is provided that a similar course has
	been taken elsewhere.  Courses that are waived rather than
	taken may not be counted toward the CSMS degree.

     At least 3 quarters of seminars such as those
     listed below must be attended, 
     but no more than 6 units may be counted toward the CSMS degree.
        CS 500, CS 510, CS 520, CS 522, CS 527, CS 540, CS 545.


@begin(multiple)
     A program of 21 units in an area of specialization must be completed.  
     All courses in this area must be taken for letter grades.	
     Five approved programs are listed below.  Students may propose 
     to the M. S. Program Committee other coherent programs that meet
     their goals and satisfy the basic requirements.  CS 393 (Computer
     Laboratory) is an approved elective, and subject to advisor
     approval, may be used for partial fulfillment of the requirements
     in any of the specializations.

!
@begin(enumerate)
@begin(multiple)
          Numerical Analysis/Scientific Computation 
@begin(enumerate)
              The following courses:  CS 237B, CS 237C.
            
              At least two of the following courses:  CS 260,
	      MATH 131, MATH 132, MATH 220A, MATH 220B, MATH 220C,
	      OR 152, OR 153, STAT 116, STAT 219, STAT 220.

              At least three of the following courses:  CS 327A, 
		CS 327B, CS 327C, CS 335, CS 337A, CS 337B,
		CS 337C, CS 338A, CS 338B, CS 338C, AA 214A, AA 214B,
		CE 201, ME 235A, ME 254, OR 240.
		
@end(enumerate)
@end(multiple)

@begin(multiple)
          Systems
@begin(enumerate)
              At least four of the following courses:  CS 211, CS 244A
		CS 245, CS 312A or CS 312B, CS 346, EE 271.
 
              At least 9 units selected from the remainder of the previous
		group and the following courses:  CS 244B, CS 248,
                CS 265, CS 318,
		CS 340, CS 342, CS 343, CS 345, CS 446,
		EE 183, EE 272A, EE 272B, EE 281,
		EE 288, EE 312, EE 374, EE 486, EE 487.

@end(enumerate)
@end(multiple)

@begin(multiple)
           Software Theory 
@begin(enumerate)
              The following courses:  CS 254, CS 257A, CS 260, CS 262,
                STAT 116.

              At least 9 units from the following courses:  CS 244A, CS 244B,
		CS 245, CS 340, CS 342, CS 343, CS 345, CS 346, CS 446.

@end(enumerate)
@end(multiple)

@begin(multiple)
           Theoretical Computer Science 
@begin(enumerate)
               The following courses:  CS 254, CS 257A, CS 260.
             
               At least two of the following courses:  CS 257B,
		CS 262, CS 263.


               At least 9 units selected from the remainder of the previous
               group and the following courses:  CS 345, CS 350, 
               CS 353, CS 357, CS 360, CS 363A, CS 363B,
               CS 365, CS 366, CS 367A, CS 367B, CS 379, CS 456, OR 340A.
@end(enumerate)
@end(multiple)
@begin(multiple)
		Symbolic and Heuristic Computation
@begin(enumerate)
		The following courses:  CS 254, CS 257A, CS 257B, CS 306

		At least 12 units form the following courses:  CS 223A, CS 223B
		CS 275, CS 276, CS 326, CS 327A, CS 327B, CS 327A, CS 329,
		CS 523; no more than one of CS 328A, CS 328B, CS 328C.

@end(enumerate)
@end(multiple)

@end(enumerate)
@end(multiple)
@end(enumerate)

!@begin(Center)@begin[F1]
MASTER OF SCIENCE IN
ARTIFICIAL INTELLIGENCE
@end[F1]@end(Center)

  The degree of "Master of Science in Computer
Science:Artificial Intelligence" may be conferred
upon students who wish to develop a competence in the
design of substantial knowledge based AI applications. The
degree will be administered by the Committee for Applied
Artificial Intelligence, composed of faculty and
research staff of the Computer Science Department.
Present members include Tom Binford, Bruce Buchanan (Chairman),
Bill Clancey, Edward Feigenbaum, and Paul Rosenbloom.

  The CSAI program will begin in autumn quarter each
year.  Normally, a student will spend two years in
the program.  Each quarter the student will register
half-time (9 units) and serve as a research or
teaching assistant half-time (20 hours per week).
The first year will involve acquiring the fundamental
concepts and tools through course work and project
involvement.  During the second year, the student will
implement and document a substantial application.

  A student should indicate preference for this
degree at the time of applying for admission.
(Coterninal applications from Stanford undergraduates
are discouraged, because of the two year research
training required.
Admission to the CSAI program will be limited by 
available computing resources, research supervision,
and financial support.  To be considered for this progrma, an 
application should reach the Office of Graduate Admissions
by January 1.

  The degree of "Master of Science in Computer
Science:Artificial Intelligence" is intended as a terminal
professional degree.  Students completing this program will
have no advantage over other Ph.D. applicants; admission to
MS/CS:AI may negatively affect a subsequent Ph.D. application.  
Students planning to obtain the Ph.D. degree are strongly
advised to apply directly for admission to the Ph.D. program.

!@begin(Center)@begin[F2]
PROGRAM REQUIREMENTS
@end[F2]@end(center)

  Programs of at least 54 quarter units that meet
the following guidelines will normally be approved:

@begin(Enumerate)

Core AI.  At least three AI courses (9 units): Required are
    CS 223A and CS 223B. The other courses may be chosen
    from CS 275, CS 276, CS 326, CS 327, or CS 520.

Classical hardware and software (6 units): CS 242 and
    C.S. 261 is required.  Students with prior
    equivalent courses may choose two from the following:
    CS 211; CS 212; CS 243; CS 245; CS 246; CS 312.

Theoretical computer science (3 units):  Choose one
    course from: CS 257A or CS 306.

Practicum (27 units):  CS 393 or CS 499.
A  substantial A.I. system is implemented and
documented in the second year.
This is an application that makes significant use of 
AI concepts and methods in a working program, demonstrating
the student's understanding of the field.

Additional units must be in courses relevant to the project. 
Acceptable courses will be determined by the project supervisor,
depending upon the application area of the project.  Examples
of courses to take outside the Computer Science Department include
Physical Science, Social Science, or Mathematics.
@end(Enumerate)

  Courses taken to satisfy guidelines 1 through 5 will
normally be taken for a letter grade.  As in the
MS program in Computer Science, a 3.00 grade point average
must be maintained in these courses.  Students in this program
must also demonstrate satisfactory quarterly progress on an
AI research project.

  CSAI programs that deviate from one or more of the
above guidelines in order to meet the valid
objectives of individual students will be considered
by the CSAI Committee on an individual basis. In
particular, students are not expected to take courses
when they have had the equivalent subject matter
previously.  The student should submit a written
statement of individual objectives and how the
program and previous preparation meet these
objectives.

  A successful experience in this program is likely to
require an undergraduate education in the sciences, with
at least a moderate exposure to computing concepts
and practice.  Familiarity with LISP strongly advised.

!@begin(Center)@begin[F0]
DOCTOR OF PHILOSOPHY
@end[F0]@end(Center)

  The University's basic requirements for the
doctorate (residence, dissertation, examination,
etc.), are discussed in the section "Degrees"
in this bulletin.  The following are 
Departmental requirements:

@begin(Enumerate)

A student should plan and successfully
complete a coherent program of study covering
the basic areas of computer science and related
disciplines.  The student's advisor has primary
responsibility for the adequacy of the program,
which is subject to review by the Graduate
Study Committee of the department.

Each student, to remain in the Ph.D. program, must pass
a comprehensive exam covering introductory level graduate
material in major areas of computer science.  The comprehensive 
exam has two sections, the written exam and the programming 
project.  The written exam covers six major areas as follows:
digital systems (hardware), artificial intelligence, numerical
analysis, programming systems (software), mathematical theory
of computation, and analysis of algorithms.
Once a student passes the examination, he or she will 
apply for admission to candidacy for the Ph.D. by the end of six
quarters of full-time study (excluding summers).  By the end of nine
quarters (excluding summers) each student should
pass a qualifying exam in the general area of
his or her expected dissertation.  The Administrative
Assistant for Academic Affairs has further details.

As part of the training for the Ph.D., each
student is required to complete one of
the following options of teaching service:
@begin(enumerate)
Two units (a unit is 10 hours per week for one quarter)
as a teaching assistant for courses numbered 300 or above.

Four units as a teaching assistant for courses numbered between
200 and 299.

Two units as a teaching assistant for a course numbered below 300,
and two units as a teaching fellow for the same course.

One unit as a teaching assistant for a course numbered 300 or above,
and two units as a teaching assistant for courses numbered between
200 and 299.
@end(enumerate)
In addition, research
equivalent to that normally performed by research
assistants is required during one or more quarters.

!
The most important requirement for the Ph.D.
degree is the dissertation.  After passing the
qualifying examination each student must secure
the agreement of a member of the department
faculty to act as the dissertation advisor.  (In
some cases the dissertation advisor may be in 
another department.)  The Department is currently
conducting research in analysis of algorithms,
artificial intelligence,
complexity theory,
computational geometry, databases and knowledge bases,
data structures, distributed processing,
graph theory, heuristic programming, measurement
and performance evaluation, numerical linear algebra,
operating systems, optimization, 
parallel processing, partial 
differential equations, program verification,
programming languages and systems,  reliability of computer 
systems, robotics, spline functions, and vision
and perception.

Each student must pass a University Oral 
Examination in the form of a defense of his or her
dissertation.  It will usually be held after all
or a substantial portion of the dissertation
research has been completed.

The student is expected to demonstrate the
ability to present scholarly material orally,
both in the dissertation defense and by a lecture
in a departmental seminar.

The dissertation must be accepted by a
reading committee, composed of the principal
dissertation advisor, a second member from within
the department, and a third member chosen 			
from within the university. The principal advisor
and at least one of the other committee members
must be Academic Council members.

@end(Enumerate)

!@begin(Center)@begin[F1]
Ph.D. Minor
@end[F1]@end(Center)

  For a minor in Computer Science a candidate is
required to demonstrate a suitable level of 
competence in the departmental comprehensive
examination.  There are no specific course
requirements.  For further information see the
Administrative Assistant for Academic Affairs.

!@begin(Heading)
TEACHING AND RESEARCH
ASSISTANTSHIPS
@end(Heading)

  Graduate student assistantships are available.
Assistants receive a tuition scholarship for up
to nine units of study per quarter during the
academic year, and in addition receive stipends
of at least $7,551 for the nine-month year.  Some		
may work full time in the summer for approximately
$1,678 per month.						

  Duties in the academic year involve 20 hours of
work per week.  Teaching assistants help an
instructor teach a course by meeting discussion
sections, consulting with students, grading
examinations, etc.  Research assistants help
senior staff members with research in computer
science.  Approximately two hours of the work week
are spent in attendance at Computer Science
Department colloquia and seminars.  Nearly all 
teaching and research assistantships are held by
Ph.D. students in the Computer Science Department.
If there is an insufficient number of Ph.D. students
to staff teaching and research assistantships, then
such positions are made available to a limited number 
of qualified master's students; however, master's
degree students (except for students in the CSAI program)
should not plan on being appointed.

  Students with NSF fellowships and traineeships
may have the opportunity to supplement their
stipends by serving as graduate student 
assistants.

@end(Text) @comment(End of indented paragraph mode)

!@Heading(Guide to selecting introductory Computer Science courses)

Students arriving at Stanford have widely differing backgrounds and
widely differing goals, but most of them will find that the ability
to use computers effectively will be beneficial to their education.
The Computer Science Department offers a large collection of
introductory courses to help meet the needs of many different
students. This guide provides the information to help you select the
course or courses that best meet your needs.

Students who expect to major in Computer Science, or to learn a
substantial amount of introductory computer science in preparation
for computer-intensive majors in engineering, should take CS106X,
then CS108ABC. CS106X is a fast-paced course for students who have
had a certain amount of prior exposure to computer programming and
have a degree of mathematical maturity. It covers the principles of
software engineering∪the construction and evaluation of computer
programs∪and spends a relatively small amount of time teaching
elementary programming skills. CS108ABC is an introduction to the
field of Computer Science, and is appropriate both for students who
expect to become computer professionals, students who need a deep
understanding of computer science fundamentals, and students who plan
academic or research careers in Computer Science.

Students who expect to make substantial use of computers for
problem-solving in their field, including the engineering of computer
programs to solve scientific or engineering problems, should take
CS106A or CS106H, then CS106B.  Students in CS106A are not
expected to have any prior experience in computer programming, but
are expected to have a reasonable degree of mathematical ability.
Students in CS106H are expected to have a good working knowledge of
calculus.

Students in engineering and science disciplines who expect to make
limited use of computers in their fields should take CS106A. It
provides training adequate for the occasional use of computer
programs to solve engineering and science problems and provides an
introduction to the principles of software engineering.

Students in non-technical disciplines who expect to make 
use of computers in their fields should take CS105A and CS105B. These
courses cover a certain amount of the material in CS106, but with a
nontechnical orientation.

Students in non-technical disciplines who would like to learn about
computers and how they are used, but who do not want to become
proficient at programming, should take CS105A and choose the project
options instead of the programming options on the various assignments.

Students who would like to learn basic computer skills for tasks
unrelated to programming should take CS1. Various sections of CS1 are
oriented towards different styles and brands of computers.

Students who would like to learn about issues involving the computer
and its relation to society should take CS101.
@begin(format)
@bar()
@Tabclear()
@=Summary of options for introductory Computer Science courses
@bar()
@Tabset(2.5 inches)
@>Learn Computer Science:@ @ @ @\106X, 108A, 108B, 108C
@>Significant use:@ @ @ @\(106A or 106H), 106B
@>Scientific/technical use:@ @ @ @\106A
@>Nontechnical use:@ @ @ @\105A, 105B
@>Nontechnical understanding:@ @ @ @\105A
@>Exposure:@ @ @ @\1
@>Appreciation:@ @ @ @\101
@bar()
@end(format)

!@begin(Heading)
NOTE ON 
COMPUTER SCIENCE 
COURSE NUMBERS
@end(Heading)
The Computer Science Department has just made major changes to the
numbers of its courses, effective Autumn 1985.  A guide for converting
old numbers to the new ones is available from the department secretary.

!@begin(Heading)
COURSES FOR
UNDERGRADUATE STUDENTS
@end(Heading)

@begin(Text, Indent 0)

All courses (DR:T) if taken for 3 or more units.


@b[1.  Using Computers]∪A practical course in the use of specific
computer systems.  This Pass/No Credit course introduces students to
the basic functions of a computer system:  text editor, communications
facilities, software packages, etc.  Students spend approximately
one hour per week in lecture/demonstration and up to two hours
per week doing an assignment with the demonstrated software package.
There are no exams or problem sets.
This is not a programming course.
Section A will examine the DEC-20 timesharing system available at the
LOTS Computing Center.  Section B will examine the DEC Professional
350 microcomputer.  Section C will examine the Apple Macintosh
microcomputer.  And Section D will examine the IBM PC.   Sections will
be offered when appropriate staff are available to teach them,
as listed in the @u[Time Schedule.]
Students can take more than one section for credit, but may not repeat
the same section.
@begin(Display)
@i[1 unit, by arrangement]
@end(Display)

@b[3.  Programming in FORTRAN]∪An introduction to
FORTRAN for students with experience in programming
in a high-level programming language other than BASIC.
Prerequisites: 105B, 106, or equivalent.
@begin(Display)
@i[2 units, @↑Aut (Staff) MWF 12:00, first 8 weeks only		
            @\Spr (Staff) MWF 12:00, first 8 weeks only]
@end(Display)

@b[4.  Programming in Pascal]∪A shortened
alternative to 105A&B or 106, for students with
previous knowledge of computer programming.
Not intended for students with a knowledge of Pascal
Prerequisite: knowledge of a computer programming language other than BASIC.
@begin(Display)
@i[2 units, @↑Aut (Staff) MWF 12:00, first 8 weeks only		
            @\Spr (Staff) MWF 12:00, first 8 weeks only
            @\Sum (Staff)]
@end(Display)

@b[22.  Programming in LISP]∪An introduction to
the LISP language and the techniques of manipulating symbolic
data, e.g. algebraic and logical expressions, graphs and
computer programs. Progressive exercises 
develop programming skills and familiarity with a wide
range of programming tools. 
Prerequisite:  knowledge
of a programming language other than BASIC.
@begin(Display)
@i[3 or 4 units, (Staff)  by arrangement]
@end(Display)


@b[60.  Discrete Mathematics]∪Introduction to the mathematics used in
computer science.  Topics include: symbolic logic, induction,
relations, permutations, set theory, trees, graphs, groups,
boolean algebras, and lattices.
@begin(Display)
@i[3 units, Aut (Staff) MWF 1:15]
@end(Display)

@b[75.  Computers and Language]∪(Same as Linguistics
35.)  A basis for understanding computer use
dealing with language and implications of
computer systems in everyday life situations.  Introduces
basic principles of computing and linguistics
through lectures, films, discussions,
and demonstrations of existing systems.  Term paper
required.  No prerequisites.
Computer background not required.  Enrollment limited.
@begin(Display)
@i[5 units, Spr (Winograd) MWF 10:00]
and two additional hours, by arrangement]
@end(Display)

!@begin(Heading)
COURSES FOR
UNDERGRADUATE 
AND GRADUATE STUDENTS
@end(Heading)


@b[101.  Computers: Their Nature, Use, and Impact]∪Intended to
introduce students from all departments to the computer revolution.
Designed for nonspecialists to survey a variety of concepts and issues
relating to computers.  Topics include basic concepts and vocabulary
of computers and information processing; current applications of
computers in education, business, music, art, medicine, science,
entertainment, communication, consumer products, manufacturing,
defense, transportation, law, law enforcement, and government; future
trends in the economics of computing, technological advances,
artificial intelligence; impact of computers on issues of privacy,
employment, leisure, obsolescence, political and economic power, and
man's image of himself.  Programming is not taught in this course.
Alternatives: 105A, 106.  No prerequisite.
@begin(Display)
@i[3 units, Win (Feigenbaum) TTh 1:15]
@end(Display)




!
@b[105A,B.  Introduction to Computers]∪This two-quarter sequence is
designed for non-technical majors and is intended to develop a working
knowledge of computers as they are utilized in our society.  It
differs from 101 in that it requires considerable interaction between
the student and the computer.  105 is both a programming course and an
issues course, taught to be comprehensible by students without a
strong math and/or technical background.  Students are given options
to complete either programs or projects.  The Pascal programming
language is used to introduce students to the concepts of structured
programming.  Non-programming topics include basic terminology,
overview of different computer systems, overview of common software
packages, privacy, security, human factors.  105A&B together provide
the same coverage of programming that 106A provides.  Students in
technical fields are encouraged to take 106.  Prerequisite:
Mathematics 3 or equivalent.  Recommended: 1A.
@begin(Display)
@b[105A.]  @i[*4 units,  @↑Aut (Staff) MWF 10:00, 1:15
	                 @\Win (Staff) MWF 10:00, 1:15
			 @\Spr (Staff) MWF 10:00, 1:15
			 @\Sum (Staff) ]
@b[105B.]  @i[*4 units,  @↑Aut (Staff) MWF 10:00, 1:15
		         @\Win (Staff) MWF 10:00, 1:15
			 @\Spr (Staff) MWF 10:00, 1:15
		         @\Sum (staff)]
@end(Display)

@b[106A,B.  Introduction to Software Engineering]∪(formerly 106 and
107).  This two-quarter sequence gives a broad overview of the
engineering of computer applications.  The course is divided into four
general areas: general programming, software engineering, computer
science, and applications.  The Pascal programming language is used to
teach general structured programming techniques.  In the software
engineering portion of the course students will examine: the process
of specification, implementation and verification; information hiding;
procedural abstraction; data abstraction; modules; object oriented
design; and writing adaptable code.  In the computer science portion
of the course students will examine recursion and analysis techniques
that predict memory and time usage of algorithms.  In the applications
portion of the course students will examine different applications of
computers such as graphics, simulation, and data bases.  106A covers
the bulk of the programming and about half of the software engineering
principles.  106B has a balance of software engineering, computer
science, and applications.  Students intending to take the 108 sequence
are advised to take 106X instead.  Alternatives: 4, 105AB, 106H,
106X.  Prerequisite for 106A: Mathematics 3 or equivalent;
recommended: CS1-A.  Prerequisite for 106B: old 106 or 106A or 106H.
@begin(Display)
@b[106A.]  @i[*5 units, @↑Aut (Reges) MWF 9
                        @\Win (Staff) MWF 9, 2:15
	                @\Spr (Staff) MWF 9, 2:15
			@\Sum (Staff) MTWTh 9, 11]
@b[106B.]  @i[*5 units, @↑Win (Reges) MWF 2:15
	                @\Spr (Staff) MWF 2:15
			@\Sum (Staff) MTWTh 2:15]
@end(Display)

@b[106H.  Introduction to Computer Programming (Honors)]∪
Programming as an intellectual discipline.  Systematic design,
verification, and testing of programs.  Common paradigms of
programming.  Recursion, dynamic programming, itertive improvement,
divide-and-conquer methods.  Numerical convergence and precision.  No
prior programming experience is assumed; knowledge of calculus and
tolerance for abstraction are essential.  Students intending to take
the 108 sequence are advised to take 106X instead.  Alternatives: 4,
105AB, 106A, 106X.  Prerequisite: Mathematics 42 and 22.
@begin(display)
@i[*5 units, Aut (Floyd) MWF 2:15]
@end(display)

@b[106X.  Introduction to Software Engineering (Accelerated)]∪ This
course covers the programming and software engineering concepts of
106A,B in one quarter.  It is intended as a one-quarter preparation
for 108A,B,C, for students whose previous programming experience is
sufficient to help them cover this fundamental material more rapidly.
Prerequisite: Mathematics 3 or equivalent.
@begin(display)
@i[*5 units, Spr (Reges) MWF 9]
@end(display)

@b[107.  Systematic Programming]∪(Note: This course is being phased
out in favor of the new 106B course.  Students who can wait until
Winter are advised to take the new 106B instead.)∪Introduction to
systematic program design, use of a variety of data structures,
recursion, manipulation of text.  Records and pointers.  Notions of
program correctness and testing.  Modularization, portability, and
good programming practice.  C.S. 107 is intended as a second course in
programming for the practicing scientist or engineer.  Prerequisites:
4, 105B, 106 or equivalent; knowledge of most of PASCAL.
@begin(Display)
@i[*5 units, @↑Aut (Staff) MWF 2:15]
@end(Display)

@b[108A,B,C. Fundamentals of Computer Science]∪Three-quarter
introduction to mathematics and science underlying computer
programming, intended for students who plan to do advanced work.
Topics include: logic, graph theory, matrices, functions, relations,
binary arithmetic, finite automata, formal languages, program
verification, abstract data types, recursive algorithms, logic, and
proof; these form a mathematical basis for the engineering and
understanding of good computer programs.  Further topics include:
models of computation such as Turing machines, the organization of a
simple digital computer, machine language and assembly language,
efficiency analyses of recursive algorithms, runtime representation of
data structures, memory management issues, binding and allocation,
coroutines, input-output processing, interrupts. A brief exposure to
various continuing areas of Computer Science such as computer
architecture, programming languages, algorithms, data structures,
numerical analysis, and operating systems.  The course is divided into
both a lecture and a small-group lab.  Students will write substantial
programming projects in the laboratory part of the course.  Different
laboratory sections will be offered, each with a different orientation
and, therefore, a different set of programming problems.  Some
sections will be oriented towards computer science majors and other
sections will be oriented towards students in other disciplines.  This
course includes the material of CS55, so students are advised not to
take both.  Prerequisite: 106B or 106X or old 107.
@begin(display)
@b[108A.]  @i[5 units, Aut (Reid), MWF 10]
@b[108B.]  @i[5 units, Win (Reid), MWF 10]
@b[108C.]  @i[5 units, Spr (Reid), MWF 10]
@end(Display)

!@b[112.  Digital Computer Organization]∪(Enroll in
Electrical Engineering 182.)  Basic digital
circuits.  Introduction to switching theory and 
logic design.  Computer arithmetic.  Memories,
processors, control, input/output, and mass storage.
Data formats, addressing, and instruction sets.  Study
of the logic control of a small computer.
@begin(Display)
@i[3 units, @↑Aut (Manning)
            @\Win (Staff)]
@end(Display)


@b[123.  Introduction to Artificial Intelligence]∪Artificial
Intelligence (AI) is the part of Computer Science that studies the
symbolic representation of knowledge for computer use; and the
symbolic inference processes used for reasoning with the knowledge.
This course is a basic introduction to AI concepts and methods for
problem solving, planning, hypothesis formation; knowledge
representation; knowledge acquisition (learning); perceptual
behaviors; and AI's programming methodologies and tools.  Applications
of AI will be used illustratively.  AI programming will not be taught
or done.  Prerequisites: 105A,B 106, 122 or equivalent.  A
reading knowledge of LISP will be useful but is not required.
@begin(Display)
@i[3 units, Spr (Feigenbaum) T Th 1:15-2:30]
@end(Display)

!@b[135.  Numerical Methods]∪This survey course is
designed to acquaint students in science and 
engineering with methods and techniques for 
solving scientific problems of a mathematical
type on digital computers.  Emphasis is given to
practical problems and pragmatics.  Program
libraries are studied and used.  Problems to be
discussed include interpolation and approximation
of data, solution of differential equations,
numerical integration, solution of linear and 
nonlinear systems of equations, fast Fourier
transform.  Pitfalls in automatic computation and
their remedies are discussed.  Not intended for
students with further interests in Numerical
Analysis.  Alternate: 137A,B.  Prerequisites:
knowledge of FORTRAN; Mathematics 113 and 130;
or equivalents.
@begin(Display)
@i[3 units, @↑Win (Oliger)  MWF 10:00
	    @\Sum (Staff)]
@end(Display)

@b[140.  Object-Oriented Design with Ada]∪Introduction
to the principles of software engineering and object oriented
design using the Ada programming language.  The process of
specification, implementation and verification is demonstrated in
the deveiopment of several packages and generic program units.
@begin(Display)
@i[4 units, @↑Win (Bryan)]
@end(Display)

@b[168.  Assembly Language and Efficiency]∪Examination of
algorithms, programming techniques, and introduction to the analysis of 
time and space consumption in the context of the assembly language
for the DECSYSTEM-20.  Digital computer organization; binary
arithmetic;  representation of instructions, fixed-point and
floating point numbers, and text in binary.  Operand addressing;
instruction execution; machine language.  Symbolic assembly process;
relocatable code; macros and conditional assembly.  Debugging.
Data structures:  machine words, strings, stacks, multi-dimensional 
arrays, lists.  Control structures:  loops, subroutines, recursion, 
coroutines.  Examine and analyze algorithms for bubble sort, heap sort,
merge sort; linear, binary and hash search.  Sources of error in
floating point arithmetic.  Input, output and random access.
Interrupts and traps.  Coordination of simultaneous processes.
Prerequisite:  107 or 108B.
@begin(Display)
@i[3 units, Win (Gorin) TTh 11:00-12:15]
@end(Display)

!@b[192.  Programming Service Project]∪Appropriate  
academic credit (without financial support) will 
be given for volunteer computer programming work
of public benefit and educational value. Restricted
to computer science students.
@begin(Display)
@i[1 to 3 units, any quarter (Staff) by arrangement]
@end(Display)

@b[198C.  Teaching of Computer Science]∪Students learn how to consult
at the LOTS computing center.  Attend biweekly lectures on system
software and work as the on-duty LOTS consultant.  Interested students
should talk to the Student Coordinator at LOTS.  Prerequisite: 1A or
equivalent.
@begin(Display)
@i[1 to 3 units, any quarter (Reges) by arrangement]
@end(Display)

@b[198H.  Teaching of Computer Science]∪Students learn how
to teach other students, by on-duty help at the computing center 
and by running a small discussion section for a specific 105 or
106 course.  Attend three weekly meetings to discuss introductory courses
in general, the specific course in particular, and techniques of teaching.
Positions are limited; see the receptionist in Margaret Jacks Hall for
an information sheet and application.  Prerequisite:  107 or 108A.
@begin(Display)
@i[3 units, Aut, Win, Spr (Reges) by arrangement]
@end(Display)

@b[199.  Independent Work]∪Special study under faculty direction,
usually leading to a written report.  A letter grade is given;
if this is not appropriate, student should enroll in 199P.
Register using the section number associated with the instructor.
@begin(Display)
@i[Any quarter (Staff) by arrangement]
@end(Display)

@b[199P.  Independent Work]∪Like 199, but graded either Pass or
No Credit.
@i[Any quarter (Staff) by arrangement]

!@b[211. Logic Design]∪(Same as Electrical Engineering 381.)
Principles and techniques of logic design. Topics include combinational
circuit analysis including hazard detection, combinational circuit design
including PLA, VLSI, and MSI techniques as well as testing techniques, IC logic
families, flip-flop properties, sequential circuit analysis and synthesis
for both fundamental and pulse mode circuits, design for testability
techniques.  Prerequisite:  112 (E.E. 182) or equivalent.
@begin(Display)
@i[3 units, @↑Aut (Peterson) MWF 9 (Enroll in E.E. 381)
	    @\Win (McCluskey) TTh 2:45-4:00 (Enroll in E.E. 381)]
@end(Display)

@b[212.  Computer System Architecture-Structure]∪(Same
as Electrical Engineering 282.)
Structures of systems using processors,
memories, input/output (I/O) devices, and I/O interfaces
as building blocks.  Computer System organization and
architecture - accumulator, general-register, and stack
machines, multiprocessors and other organizations.  
Issues and tradeoffs involved in the design of computer
system architectures and, in particular, of instruction sets.
Memory
and I/O buses, I/O interface design and typical I/O devices.
Memory hierarchies.
Prerequisite:  112 (E.E. 182).
@begin(Display)
@i[3 units, @↑Aut (Baskett)T Th 2:45-4:00
	    @\Spr (Staff) ]
@end(Display)

@b[223A.  Fundamentals of Artificial Intelligence]∪A rigorous
introduction to the issues and ideas of Artificial Intelligence.
Topics include knowledge representation, automated deduction,
search control, machine learning, and meta-level architecture.  
Prerequisite:  Familiarity with mathematical reasoning and computer
programming.
@begin(Display)
@i[3 units, Win (Genesereth) MWF]
@end(Display)

@b[223B.  Building Expert Systems]∪Laboratory course to accompany
223A.  Teams of students implement programming projects covering a
variety of system architectures and techniques for knowledge acquisition
and explanation.
@begin(Display)
@i[2 or 3 units, Spr (Genesereth) TTh 9:30-10:45]
@end(Display)

@b[237A,B,C.  Numerical Analysis]∪This 
three-quarter sequence is designed to acquaint students of the 
mathematical and physical sciences with the derivation and
analysis of methods for solving mathematical problems on
digital computers.  It is organized so that students can take the 
first quarter and then either the second or third according to
their interests if they wish.  Fundamental concepts of
numerical computation are introduced in 237A.  Topics include
linear systems of equations, interpolation, numerical differentiation
and integration, and the soution of nonlinear equations.  Material 
related to the analysis of structures and data is discussed in 237B.
Topics include the approximation of functions, the matrix eigenvalue
problem, least squares approximation and statistical computations.
The simulation of systems governed by ordinary and partial 
differential equations is discussed in 237C.  Topics include methods
for the solution of both initial and boundary value problems. 
Finite difference, finite element and collocation methods are included.
These courses include analysis of convergence and estimation of
truncation and round-off errors.  Assigned work includes both analytical
problems and problems to be solved with the aid of a computer.  237A
is prerequisite for both 237B and C.  Prerequisites:  3 and 105B or 106;
Mathematics 113 (CS 237C has the additional prerequisite of Mathematics
130); or equivalents.
@begin(Display)
@b[237A.] @i[3 units, Aut (Dahlquist) MWF 2:15]
@b[237B.] @i[3 units, Win (Golub) MWF 2:15]
@b[237C.] @i[3 units, Spr (Oliger) MWF 2:15]
@end(Display)

!@b[242.  Programming Languages]∪(Same
as Electrical Engineering 285.)
Introduction to several programming
languages, such as LISP, Ada, Snobol, APL, PROLOG, and/or Simula. Comparison of
issues in programming language design, and language features that result
from them. Runtime representation of data and control constructs. Memory
management issues, recursion, binding and allocation, scoping, parameter
passing mechanisms, compilation vs. interpretation, modules and classes,
abstract data types, exception handling. Several programming assignments,
each in a different language, will be given; emphasis will be on proper use
of the features and facilities of each language and its runtime system.
Prerequisites: 108A knowledge of Pascal and machine language.
@begin(Display)
@i[3 units, @↑Aut (Staff)   
            @\Spr (Owicki) (Enroll in E.E. 285)]
@end(Display)

@b[243.  Compilers]∪(Enroll in Electrical Engineering 283.)
The grammars of programming languages;
lexical analyzers, parsers, code emitters and   
interpretation; global and peephole optimization;
run-time support; error management; translator
writing systems.  A small project will be 
assigned.  Prerequisite 242 (E.E. 285).
@begin(Display)
@i[3 units, Win (Linton)]
@end(Display)

@b[244. Computer Networks: Architecture and Implementation]∪Motivations
and objectives of computer networks; overview of network
architectures; layered architectures and the ISO Reference Model; network
functions.  Circuit-switching and packet-switching; physical level protocols;
data link protocols including HDLC and multiaccess link control.  Network
control, transport, and session protocols including routing, flow control; end-
to-end communication and internetworking.  Presentation layer protocols
including virtual terminal and file transfer protocols, cryptography, and text
compression.  Specific examples and standards will be cited throughout the
course for point-to-point, satellite, packet radio, and local networks.
Prerequisite: 246 (E.E. 286) or equivalent; may be taken as corequisite.
@begin(Display)
@i[3 units, @↑Aut (Cheriton) TTh 11:00-12:15
	    @\Win (Staff) (Enroll in E.E. 384)]
@end(Display)


@b[245.  File and Database Systems]∪(Same
as Electrical Engineering 287.)
File organization
and access, performance analysis, storage
management.  Database models, description, an
implementation alternatives.  Reliability,
protection, and integrity.  Design and management
issues.  Prerequisites:  107 or 108B (E.E. 180B)
Recommended: 242 (E.E. 285) and 262.
@begin(Display)
@i[3 units, Win (Wiederhold) MWF 11:00]
@end(Display)

@b[246. Introduction to Operating Systems]∪(Same
as Electrical Engineering 286.)  Motivations,
functions, and evolution.  Basic structure.  Multiprogramming:  processes
and scheduling.  Concurrent programming:
mutual exclusion, synchronization, and communication.  Memory management:
static relocation, virtual memory, segmentation, paging, load control.  I/O and
file systems: file structures, naming, disk management, drivers.  Overview of
other issues, including scheduling, protection, user interfaces, and
distributed system issues.  Prerequisite: 108B or 242 (E.E. 285).
@begin(Display)
@i[4 units, to be arranged.]
@end(Display)


@b[248. Computer Graphics]∪Topics in computer graphics:
display technology, transformations, graphics coordinate
systems, color representation, hidden surface elimination,
shading and light-source simulation, input device 
technology, human engineering, animation graphics,
structured display files, three-dimensional representation,
anti-aliasing, calligraphic and raster graphics issues.
Specific implementations will be cited throughout
the course.
Prerequisite: an ability to learn and use the computer
languages necessary for graphics programming.
@begin(Display)
@i[3 units, Spr (Guibas) TTh 9:30-10:45]
@end(Display)


@b[254.  Formal Languages]∪Introduction 
mathematical theory underlying programming
languages and the machines which accept
them.  The languages of machines:  regular,
context-free, and recursive languages.
Non-determinism.  The hierarchy of machines:  finite,
counter, stack, and universal.  Generators, acceptors,
and transducers.  Ambiguity and parsing.
Algorithmically undecidable
problems.  No prerequisite; CS 60 suggested.
@begin(Display)
@i[3 units, Spr (Floyd) MWF 10:00]
@end(Display)

@b[257A.  Logical Basis for Computer Programming]∪An
introduction to the logical foundations of
computer programming.   An elementary exposition, from
a computational point of view, of propositional logic, predicate
logic, and theories with equality and
induction, including integers, strings, lists,
trees, sets, bags.  Proofs of properties of
programs.  No prerequisites.
@begin(Display)
@i[3 units, Aut (Staff) TTh 11:00-12:15]
@end(Display)

@b[257B.  Deductive Systems]∪A continuation of CS257A.  A
description of formal logical systems oriented toward automated
deduction and theorem proving.  Special emphasis on topics relevant 
to the synthesis, verification, and transformation of computer
programs, and to logic programming.  Well-founded induction;
theory of expressions and
substitutions; resolution; unification; skolemization; deductive tableaus.
 Prerequisite:  257A.
@begin(Display)
@i[3 units, Win (Staff) TTh 9:30-10:50]
@end(Display)

@b[260.  Concrete Mathematics]∪Finite difference
calculus; manipulation of sums and products; 
properties of binomial coefficients, 
Stir-ling numbers, harmonic numbers, Fibonacci numbers;
use of generating functions to solve
recurrence relations; asymptotic expansions;
analysis of algorithms.  An emphasis on
obtaining simple closed-form answers to problems
when it is possible to do so.  Prerequisites:
Mathematics 22, 42, or equivalent.
@begin(Display)
@i[3 units, Aut (Staff) MWF 1:15]
@end(Display)


!@b[261.  Introduction to Data Structures and Algorithms]∪Basic
data structures: list structures, trees, balanced trees,
hash tables, partially ordered trees.
Storage management: garbage collection, allocation strategies.
Techniques for asymptotic and exact analysis of programs, and
criteria for data structure and algorithm selection.
Methods for the design of efficient algorithms: divide-and-conquer,
dynamic programming, greedy algorithms.
The theory of intractable problems: NP-completeness, examples of
intractable problems.
Prerequisite: 108B or equivalent.
@begin(Display)
@i[3 units, @↑Aut (Ullman) MWF 3:15
            @\Spr (Staff) MWF 3:15]
@end(Display)

@b[261N.  Introduction to NP-Completeness]∪Nondeterministic
computation; Turing machines and their polynomial-time equivalence 
to real computers; reducibilities among problems; Cook's
theorem; examples of NP←complete problems. (Students participate
in approximately the last third of 161.)
@begin(Display)
@i[1 unit, @↑Aut (Ullman) MWF 3:15
            @\Spr (Staff) MWF 3:15]
@end(Display)


@b[262.  Sorting and Searching ]∪Design and analysis of efficient
algorithms for sorting and searching and rearranging large
data sets.  Methods of algorithmic analysis.  Algorithmic entropy and
information.   Prerequisites:  260 and 261.
@begin(Display)
@i[3 units, Win (Floyd) MWF 3:15]
@end(Display)

@b[263.  Arithmetic and Combinatorial Algorithms]∪Arithmetic:
serial and parallel algorithms for common arithmetic functions;
modular arithmetic and other representation-dependent techniques.  Set
algorithms: intersection, union-find.  Graph algorithms: minimum spanning
trees, transitive closure.  Text processing: pattern matching, regular
expression recognition.  Prerequisite: 261.
@begin(Display)
@i[3 units, Spr (Pratt)
  alternate years, given 1986-87]
@end(Display)

!@b[264.  Introduction to Combinatorial Theory]∪Intended
as an elementary first course in
combinatorics.  Topics include permutations, 
combinations, partitions; the principle of
inclusion and exclusion; Ramsey's theorem;
Burnside's lemma; Polya's counting theorem;
the elementary theory of graphs and trees; flow
in networks; matching problems; an introduction to
matroids.  Prerequisite:  Mathematics 44 or equivalent.
@begin(Display)
@i[3 units, Win (Danzig) TTh 9:30-10:45
     alternate years, given 1985-86]
@end(Display)


@b[265. Basic Tools in Computer Systems Modeling]∪(Enroll
in Electrical Engineering 284.) Basic tools for the analysis 
and performance evaluation of computer systems.  Topics include:
review of probability theory; Poisson distribution; exponential distribution;
transforms; Poisson process; discrete-parameter Markov chains;
birth-death processes; queueing theory; network of markovian queues;
elements of graph theory; graph algorithms. Examples will be drawn from
the computer systems area.   Prerequisite:  Statistics 116.
@begin(Display)
@i[3 units, Win (Tobagi)]
@end(Display)



@b[270. Computer Applications in Medicine]∪(Same as Medical Information
Systems 210.)  Provides an
overview of medical computer science activities in both research
and applied environments.  Topics covered include office
systems, hospital information systems, medical databases,
pharmacy systems, laboratory systems, image
analysis, EKG analysis, history taking, library systems,
multiphasic health testing, medical computer-aided instruction,
decision support systems.  
@begin(Display)
@i[3 units, Aut (Fagan, Shortliffe, and Wiederhold) TTh 12:15]
@end(Display)

@b[271A.  Computer-Assisted Medical Decision Making]∪(Same as Medical
Information Systems 211A.)  Introduction to medical decision making
techniques and to methods for their implementation in decision
support systems.  Bayesian statistics, decision analysis, expert
systems.  No prerequisites.  
@begin(Display)
@i[3 units, Win  (Shortliffe) TTh 12:15]
@end(Display)

@b[271B. Computer-Assisted Medical Decision Making]∪(Same as Medical
Information Systems 211B.)  Intended for students who have
completed 271A and wish to implement some of those
ideas into a computer project.  Computer programming will
be required in most projects.  Prerequisite:  271A
@begin(Display)
@i[2-4 units, Spr (Fagan, Shortliffe, and Buchanan) TTh 12:15]
@end(Display)

@b[273.  Concepts of Text]∪(Same as Art 281.)  What every
literate person should know about the basic principles of the visual
organization of text.  Subjects include handwriting, typewriting,
typography, and computerized documents.  Perceptual, linguistic, and
semiological issues will be discussed.  Course work will consist
primarily of visual exercises.  No prerequisites.  
@begin(Display)
@i[3 units, Aut (Bigelow) F]
@end(Display)

!@b[275.  Computational Models for the Syntax of		
Natural Language]∪(Same as Linguistics 227.)
Introduction to formal systems and computer
implementations for syntax.  Survey of relevant
material from linguistics and formal language
theory.  Review and discussion of past and current
parsing systems.  Overview of relevant aspects of
the syntax of English.
@begin(Display)
@i[3 to 4 units, Win (Winograd) MWF 10:00
   alternate years, given 1985-86]
@end(Display)

@b[276.  Computational Models for the Semantics of		
Natural Language]∪(Same as Linguistics 235.)
Conceptual overview of problems of meaning.
Formalisms from logic, computation theory,
psychology and linguistics, relevant to computer
systems for natural language.  Survey and critical
discussion of current research on computational
approaches to natural language.
@begin(Display)
@i[3 to 4 units, Win (Winograd)  
  alternate years, given 1986-87]
@end(Display)

@b[277.  Computational Models of Discourse]∪(Same as
Linguistics 236.)  Text and conversation structure.  
Computational theories of anaphora, focus, and information
structure.  Plans and speech acts.  Use of world knowledge
and reasoning in computer analysis and generation of discourse.
@begin(Display)
@i[3 to 4 units, Spr (Staff)]
@end(Display)




!@begin(Heading)
COURSES PRIMARILY
FOR GRADUATE STUDENTS
@end(Heading)

All courses (DR:T) if taken for three or more 
units.


@b[300.  Departmental Lecture Series]∪Weekly
presentations by members of the department faculty, each
describing informally his or her current research
interests and views of computer science as a 			
whole.  Recommended for first-year Computer
Science graduate students.
@begin(Display)
@i[1 unit, Aut (Staff)Th 2:45-4:00]
@end(Display)

@b[304. Problem Seminar]∪Solution of various 
problems, numeric and symbolic, on computers.
Emphasis on the research paradigms of computer
science and the development of algorithms
that are "beautiful" from various points of
view.  Limited to Ph.D. students in
computer science, and recommended for students
beginning such a degree program.
@begin(Display)
@i[3 units, Win (Mayr) TTh 11:00-12:15]
@end(Display)

@b[306. Recursive Programming and Proving]∪Recursive		
programming using the LISP language and techniques		
for proving the corrrectness of recursive
programs.  Computing with symbolic expressions		
rather than numbers, e.g., algebraic expressions,	
logical expressions, patterns, graphs, and		
computer programs.  Pattern matching and syntax		
directed computation.  Preparation for work in		
artificial intelligence is emphasized.		
Prerequisite: 107 or 108B or equivalent ability to	
program.						
@begin(Display)
@i[3 units, Aut (McCarthy) TTh 1:15-2:30]
@end(Display)

@b[307. Topics in ADA Programming]∪(Enroll in E. E. 289)
Ada Language will be used to focus
on current research issues in design and implementation of concurrent
programming languages and methodology of concurrent programming.  Topics
include Ada language design and programming techniques, multi-task
programming, compilation algorithms for tasking, design and implementation
 of runtime scheduling packages, detection of 
concurrency errors, design of high level annotation languages, verification
and validation methods, and programming support environments.  Prerequisites:
107 or 242 or CS 257A and knowledge of Pascal.
@begin(Display)
@i[3 units, Spr (Luckham)]
@end(Display)

@b[309.  Industrial Lectureships in Computer Science]∪
Each quarter the Computer Science Department invites one outstanding computer
scientist from the local industry to give a course in his or her
specialty. These courses (309A,B,C) are ordinarily given only once.
Lecturers and topics change from year to year, hence courses with this
number may be taken repeatedly.

@b[309A.  Prolog and Natural Language Analysis]∪
Introduces the logic programming language Prolog as a tool for
natural language analysis and related topics in artificial
intelligence, through a progression of natural language analysis
examples. No previous experience 
logic programming or natural
language analysis is required.  The following topics will be
discussed: representing context-free grammars in Prolog; definite
clause grammars; the logical variable; difference lists; top-down
parsing and the Prolog execution model; syntactic analysis of complex
constructions; semantic translation rules and logical form; general
computations in grammars; structure manipulation and multistage
analysis; operations on logical forms; deductive question-answering in
Prolog; metalevel computation and the embedding grammar formalisms in
Prolog; extralogical operations; implementation of alternative parsing
algorithms; the organization of a natural-language question-answering
system.  Examples will be available as running Prolog programs and
will be used for exercises.  Prerequisites: elementary notions of
logic, formal language theory, and symbolic computation.

@begin(Display)
@i[3 units, Aut (Pereira)]
@end(Display)

@b[309B.  Functional Programming]∪
Current research topics in the design and
implementation of functional programming languages, including formal
semantic models, rewriting rules and the algebra of programs, abstract
data types, program transformations, infinite sequences, and the use of
stream-valued stream functions to accommodate persistent memory and
interactive input/output.  The particular language FP will be studied in
depth, with examples drawn from other functional languages such as SASL,
ML, KRC, and Hope.  Prerequisite: a graduate-level course in programming
languages.
@begin(Display)
@i[3 units, Win (Williams)]
@end(Display)

@b[309C.  Programming Languages for AI Systems]∪The design
of programming languages to provide computational mechanisms for
AI research and expret systems.  Topics include object-oriented
and access-oriented programming; logic programming; unification
algorithms; representation of dependencies, contexts and layers; 
representations of assumptions; algorithms for truth maintenance;
constraints; meta-circular interpreters; architectures for reflection.
Prerequisite:  Working familiarity with LISP.
@begin(Display)
@i[3 units, Spr (Bobrow, de Kleer, Kahn, Mittal, Stefik)]
@end(Display)

@b[312A.  Processor Design-ALU and Its Control]∪(Enroll in
Electrical Engineering 382A.) Data representation, integers,
floating point and residue representation.  Bounds on arithmetic
speed, algorithms for high speed addition, multiplication and
division.  Pipelined arithmetic.  Implementation and control
issues using PLA's and microprogramming control.  
Prerequisites:  112(EE 182) or equivalent.
@begin(Display)
@i[3 units, Win (Flynn)]
@end(Display)

@b[312B.  Processor Design-Memory Hierarchy and Control Unit
Design]∪(Enroll in Electrical Engineering 382B.)
Cache and main memory design, virtual storage system.  Instruction
decoding and timing.  Pipelined execution and interlocks.  Instruction
set characteristics, branching, supervisory state.  Recommended:
312A (EE 382A),
@begin(Display)
@i[3 units, Spr (Flynn)]
@end(Display)


@b[317. Fault Tolerant Computing Systems]∪(Enroll in Electrical
Engineering 489.)  Basic considerations in the design of reliable
computing systems.  Concurrent checking techniques.  Redundancy
techniques.  Evaluation methods.  System consideration.  Examples of
specific system designs.  Prerequisites:  212 (E.E. 282).
@begin(Display)
@i[3 units, Spr, (McCluskey) 
   alternate years, given 1985-86]
@end(Display)


!@b[318.  Testing Aspects of Computer Systems]∪(Enroll
in Electrical Engineering 488.)
Fundamental principles of testing computer systems and designing
systems for reliability.  Failure and fault models.  Deterministic and
probabalistic techniques of test generation and testing.  Techniques
for testing memories and microprocessors.  Design for testability.
Built-In Self Test.
Prerequisites:  211 (E.E. 381)	(Also see Electrical Engineering 488.)
@begin(Display)
@i[3 units, Spr (McCluskey) 
   alternate years, given 1986-87]
@end(Display)


@b[319.  Topics in Digital Systems]∪Advanced material is often
taught for the first time as a "topics" course, perhaps by a
faculty member visisting from another institution.  Students
may therefore enroll repeatedly in a course with this number.  
See the Time Schedule for topics that are currently being offered.
@begin(Display)
@i[Any quarter (Staff) by arrangement]
@end(Display)


@b[325.  Cognitive Architecture]∪(Same as Psychology 223).
An examination of the issues involved in designing a cognitive
architecture.  Topics include the role of the architecture in
the construction of a general artificially-intelligent system,
the role of the architecture as a lorge-scale psychological model,
existing (and proposed) cognitive architecutes, and the evaluation
of architectures.  Prerequisites:  Advanced undergraduate
standing and either 223A, Psychology 106 or equivalent experience.

@b[326 Epistemological Problems of Artificial
Intelligence]∪(Same as Philosophy 326.)
Formalisms for representing what a
general intelligent program must know about the
common sense world including facts about causality, 
ability, knowledge and action.  Modes of rigorous
and conjectural reasoning, especially non-monotonic
reasoning.  Approximate theories and counterfactuals.
Connections with philosophy, especially philosophical
logic and epistemology.  Some familiarity with first
order logic will be assumed.
@begin(Display)
@i[3 units, Win (McCarthy) T Th 1:15-2:30
  alternate years, given 1984-85]
@end(Display)

@b[327A. Introduction to Robotics and Computer Vision]∪(Enroll
in Mechanical Engineering 219.) An introduction to the basics of
robot manipulators and a review of current applications.
The following topics will be discussed in detail: 
kinematic structure, coordinate transformations,
manipulator solutions, workspace, path selection, control
and dynamics, applications, locomotion.  Knowledge of matrix 
algebra and some familiarity with basic control theory and rigid
body mechanic suggested.
@begin(Display)
@i[3 units, Aut (Roth) MWF 10:00]
@end(Display)

@b[327B.  Introduction to Robotics and Computer Vision]∪An
introduction to computer vision and perception.  Image generation,
the physics of images and sensors, statistical estimation, binary
vision and industrial vision systems, structured light and ranging
sensors, stereo vision, scener interpretation and image understanding
in intelligent systems, geometric modeling and geometric reasoning,
representations of the visual world, computation hardware for high
speed image understanding, psychophysics.  Prerequisites:  statistics,
knowledge of programming at level of CS105 or CS106 in PASCAL, C, LISP,
or FORTRAN; linear algebra, orthogonal polynomials.

@begin(Display)
@i[3 units, Win (Binford) TTh 1:15-2:30]
@end(Display)

@b[327C.  Advanced Robotics]∪The emerging field of intelligent robot
control systems will be introduced.  Robot programming systems, geometric
modeling, off-line simulators, integration with CAD databases, geometric 

reasoning, assembly planning, sensory integration, collision avoidance,
grasping, mobile robots, force strategies, uncertainty analysis,
representations for spatial reasoning.  Prerequisite:  both CS227A and
CS227B, or CS223.
@begin(Display)
@i[3 units, Spr (Staff) TTh 1:15-2:30]
@end(Display)


@b[328A.  Computational Models of Cognition]∪(Enroll in Psychology 187.)]
Computational models of information processing, covering relevant
current research in both Artificial Intelligence and Cognitive
Psychology.  Use of computer simulations to test psychological
theories.  Applications of psychological research to building
Artificial Intelligence systems.  Topics will include (but not be
limited to): Knowledge Representation, Machine Learning, Natural
Language Understanding, and Parallel Processing Models.  Students will
be expected to give presentations in class on weekly readings and
submit, as a final paper, a proposal for a research project.
Enrollment by permission of instructors and limited to 15.
Prerequisites: Advanced undergraduate standing and either Psychology
106, Computer Science 223 or equivalent experience.
@begin(Display)
@i[2-3 units, Aut (Pavel and Gluck)
alternate years, given 1986-87]
@end(Display)

@b[328B.  Applying Cognitive Psychology to Computer Science]∪(Enroll
in Psychology 286.)  This course surveys broad issues in applying
psychology to various domains with emphasis on computer-user interaction.
The emphasis is on using models of human abilities and limitations in
solving real problems.  The course covers methodology including
model building and testing.  The computer related topics include
model-based approach to design, computer-user interfaces, software
psychology, and knowledge representation.  Prerequisite:  consent
of instructor.
@begin(Display)
@i[3 units, Spr (Pavel)
 given 1986-87]
@end(Display)


@b[328C.  Advanced Seminar in Perception, Cognition
and Human Performance]∪(Enroll in Psychology 286.)
Research-oriented course in-depth analyses of selected current
topics with emphasis on problems related to computer systems,
artificial intelligence and human information
processing.  Prerequisite:  consent of the instructor.
@begin(Display)
@i[1-3 units, Spr (Pavel) W 1:15-3]
@end(Display)

@b[329.  Topics in Artificial Intelligence]∪
Advanced material is often
taught for the first time as a "topics" course, perhaps by a
faculty member visiting from another institution.  Students
may therefore enroll repeatedly in a course with this number.  
See the Time Schedule for topics that are currently being offered.
@begin(Display)
@i[Any quarter (Staff) by arrangement]
@end(Display)

@b[335.  Statistical Computing]∪(Same as Statistics
227.)  Numerical analysis aspects of least 
squares, nonlinear and robust regression, random
number generation and Monte Carlo, eigenvalue
computations in multivariate analysis, numerical
integration and computational complexity.  
Emphasis on computational aspects that are
relevant to practical statistical problems.
Prerequisites: Statistics at the level of 219-220,
matrix algebra, knowledge of a programming
language.
@begin(Display)
@i[3 units, Spr (Staff) TTh 11:00-12:15]
@end(Display)

@b[337A.  Advanced Numerical Analysis]∪Approximate
methods for initial value problems and
initial boundary value problems for partial
differential equations.  Convergence and stability
theory; analysis of methods; finite difference and
finite element methods. Particular attention will
be paid to the implementation of methods and to
realistic applications.
Prerequisites: 137A and 137C.
@begin(Display)
@i[3 units, Aut (Oliger) MWF 11
   alternate years, given 1985-86]
@end(Display)

@b[337B.  Advanced Numerical Analysis]∪Solution of
linear problems: linear equations, iterative
methods for large sparse systems; linear 
programming; linearization of nonlinear problems.
Prerequisites: 137A and 137B.
@begin(Display)
@i[3 units, Win (Staff) MWF 11
   alternate years, given 1985-86]
@end(Display)

@b[337C.  Advanced Numerical Analysis]∪Solution of
boundary value problems for ordinary differential
equations and elliptic partial differential
equations by finite difference and finite
element methods.  Particular attention will be
paid to the implementation of methods and to 
realistic applications.  Prerequisites:  137A and 137C.
@begin(Display)
@i[3 units, Spr (Staff) MWF 11
   alternate years, given 1985-86]
@end(Display)

!@b[338A.  Advanced Topics in Numerical Analysis]∪Numerical
solution of initial value problems for ordinary differential
equations:  convergence and stability theory; multistep methods;
methods for stiff equations.  Prerequisites: 137A and 137B.
@begin(Display)
@i[3 units, Aut (Staff) 
  alternate years, given 1986-87]
@end(Display)

@b[338B.  Advanced Topics in Numerical Analysis]∪The
algebraic eigenvalue problem:  perturbation
theory, numerical algorithms for dense and sparse
matrices; error analysis; special applications;
inverse problems.  Prerequisites: 137A and 137C.
@begin(Display)
@i[3 units, Win (Staff) 
  alternate years, given 1986-87]
@end(Display)

@b[338C.  Advanced Topics in Numerical Analysis]∪Numerical
approximation of functions and data, approximation theory
and its applications to standard numerical analysis problems
such as quadrature and the solution of differential equations.
Prerequisites:  237A and 237B.
@begin(Display)
@i[3 units, Spr (Staff) 
  alternate years, given 1986-87]
@end(Display)

@b[339.  Topics in Numerical Analysis]∪
Advanced material is often
taught for the first time as a "topics" course, perhaps by a
faculty member visisting from another institution.  Students
may therefore enroll repeatedly in a course with this number.  
See the Time Schedule for topics that are currently being offered.
@begin(Display)
@i[Any quarter (Staff) by arrangement]
@end(Display)

!@b[340.  Topics in Concurrent Programming]∪(Enroll in
Electrical Engineering 483.)  Current research topics in
the exploitation of concurrency in computations for 
multiprocessors, distributed systems, and highly concurrent
machines.  Subjects that may be covered include programming
language features and implementation, formal models, and the
match between algorithms and architectures.
Prerequisite:  146 (E.E. 286).
@begin(Display)
@i[2 to 4 units, Aut (Owicki) 
  alternate years, given 1986-87]
@end(Display)

!@b[342.  Programming Language Design]∪(Enroll
in Electrical Engineering 389.) 
Exposure to the problems of programming 
language design and their
known solutions will be undertaken.  Topics may
include formal semantics, implementation
considerations, extensibility, very high level
languages, evaluation of language designs, and
other timely topics.  The innovative features of a
variety of modern programming languages will be 
discussed.  Prerequisites: 242 (EE 285), 343
(EE 383).
@begin(Display)
@i[3 units, Aut (Reid) 
  alternate years, given 1984-85]
@end(Display)

@b[343. Advanced Compilers]∪(Enroll
in Electrical Engineering 383.)
Lectures and discussion will
explore implementation issues in depth.  
Major focus will be optimization techniques
and advanced code generation.
A significant project will be included.  
Prerequisite: 243 (E.E. 283).
@begin(Display)
@i[3 to 6 units, Spr (Linton)]
@end(Display)

@b[344.  Computer Network Modeling and Analysis]∪(Enroll in
Electrical Engineering 484.)  Review of network functions,
architectures and protocols; computer traffic characterization; resource
sharing; packet-switched store-and-forward networks (e.g., ARPANET): delay
analysis, network design and optimization including capacity assignment,
routing and topological design; analysis of multiaccess/broadcast protocols
(used in packet-switched satellite, ground radio, and local networks):  fixed
assignment, random access, demand assignment, adaptive strategies, stability
considerations and dynamic control.  Prerequisites:  244A, 265.
is also highly recommended.  (Also see Electrical Engineering 484).
@begin(Display)
@i[3 units, Spr (Tobagi)]
@end(Display)

!@b[345.  Database System Theory]∪(Same
as Electrical Engineering 485.)
Overview of database systems;					
the entity-relationship model of the real world;
the network data model and the DBTG proposal; the
hierarchical model; the relational model; relational 
algebra and calculus; query languages based on 
algebra and calculus, such as ISBL, QUEL, SQL, and
Query-by-Example; functional dependencies and their
influence on database design; multivalued dependencies;
query optimization; concurrent operations on the 
database; query optimization and concurrency control for
distributed database systems.  Prerequisite: A familiarity
with file organization, as in 245 (E.E. 287), and with
predicate calculus, as in 257A, will be assumed.
@begin(Display)
@i[3 units, Spr (Papadimitriou) MWF 11:00]
@end(Display)

@b[346. Advanced Operating Systems]∪(Same
as Electrical Engineering 386.)
In-depth treatment of selected
topics in operating system design.  Emphasis
will be on topics not covered in 246, such as naming and binding, protection,
reliability, distributed system issues, user interfaces, construction
strategies, modeling and performance
evaluation, system management, and portability.  Significant project will be
included.  Prerequisite: 246 (E.E. 286).
@begin(Display)
@i[3 to 6 units, Spr (Lantz) TTh 1:15-2:30]
@end(Display)

@b[349.  Topics in Programming Systems]∪
Advanced material is often
taught for the first time as a "topics" course, perhaps by a
faculty member visisting from another institution.  Students
may therefore enroll repeatedly in a course with this number.  
See the Time Schedule for topics that are currently being offered.
@begin(Display)
@i[Any quarter (Staff) by arrangement]
@end(Display)

@b[350. Mathematical Theory of Computation]∪Abstract
syntax and formal semantics of programming		
languages.  Recursively defined and algolic		
programs.  Proving assertions about computer		
programs using formalisms of Boyer and Moore, Burstall, Cartwright,	
Floyd, Manna, McCarthy, and Scott.  The emphasis is	
on functional programs rather than sequential.		
Use of proof-checking programs including EKL and the
Boyer-Moore theorem prover.  Prerequisite: 257A	
with 306 recommended.					
@begin(Display)
@i[3 units, Win (McCarthy) MWF 1:15
   alternate years, given 1985-86]
@end(Display)


@b[351.  Introduction to Complexity Theory]∪Basic
machine models and complexity measure, their properties
and relationships.  Diagonalization; reduction; complete 
problems.  Concrete representative problems for the most 
important complexity classes (logspace, nlogspace, P, NP, 
Pspace).  Complexity of decision procedures for first-order
logics like Presburger Arithmetic on finitely generated 
commutative semigroups.
@begin(Display)
@i[3 units, Aut (Papadimitriou)]
@end(Display)

@b[353.  Logical Algorithms]∪Algorithms
for problems in computational logic.
Emphasis on applications to theorem proving, program
verification, deductive computation, heuristic problem
solving, and optimizing compilers.  Decision methods
for various quantifier free calculi.  The Oppen combination
of such methods.  Algorithms for program logics.  Unification.
Decidable logics of higher type.  Prerequisites: 261, Mathematics
160B, or equivalents.
@begin(Display)
@i[3 units, Aut (Pratt) TTh 9:30-10:45
   given 1985-86]
@end(Display)

@b[357.  Advanced Theory of Computation]∪Topics
in the theory of programs, including the
semantics of programming languages, formalization
and proof of properties of programs, modal logics
of programs, and the theory of concurrent programs.
Prerequisite:  257A, or equivalent.
@begin(Display)
@i[3 units, Spr (Staff) TTh 9:30-10:45
alternate years, given 1985-86]
@end(Display)

@b[358.  Advanced Computability and Complexity]∪
The recursion thereom and its applications.
Blum's axiomatic theory of computational complexity.
Chaitin's theory of program-size complexity and
randomness.  Program schemata.  The inherent time
requirements of computer arithmetic.  Theoretical
limitations on automated mathematics.  Prerequisite:
254 or equivalent.
@begin(Display)
@i[3 units, Aut (Floyd) TTh 11:00-12:15
   alternate years, given 1985-86]
@end(Display)

@b[359.  Topics in Theory of Computation]∪
Advanced material is often
taught for the first time as a "topics" course, perhaps by a
faculty member visisting from another institution.  Students
may therefore enroll repeatedly in a course with this number.  
See the Time Schedule for topics that are currently being offered.
@begin(Display)
@i[Any quarter (Staff) by arrangement]
@end(Display)

!@b[360.  Analysis of Algorithms]∪An advanced course
primarily for students who will be doing 
specialized work in the analysis of algorithms.
The intent is to present each of the important
paradigms used to analyze algorithms exactly.  
Combinatorial approaches, generating
functions, techniques for exact solution of
recurrences, functional operators,
and asymptotic methods are studied in connection
with important algorithms for sorting and
searching.
@begin(Display)
@i[3 units, Win (Yao) TTh 1:15-2:30
   alternate years, given 1985-86]
@end(Display)

@b[363A.  Combinatorial Algorithms]∪Advanced data structures and
algorithms for priority queues, path compression, minimum spanning
trees, searching in graphs, strongly connected components, lowest
common ancestors, planarity testing, graph isomorphism, pattern
matching, shortest paths, transitive closure, boolean matrix
multiplication, maximum matching and maximum network flow.
Prerequisites: 261, 262, 263, or equivalents.
@begin(Display)
@i[3 units, Win (Staff) 
   alternate years, given 1986-87]
@end(Display)

@b[363B. Combinatorial Algorithms]∪Scheduling, flow analysis, graph separators
and applications, concentrators, boolean networks, sorting networks,
computation in groups, linear and integer programming, vertex elimination and
sparse systems, approximation algorithms for NP-complete problems.
Prerequisites: 363A, 261, 262, 263 or equivalents.
@begin(Display)
@i[3 units, Win (Pratt) TTh 11:00-12:15
   alternate years, given 1985-86]
@end(Display)

@b[364. Combinatorial Optimization]∪Algorithms for optimization of
combinatorial structures.  Complexity of problems such as linear programming
and the traveling salesman problem.  NP-completeness, approximation
algorithms, worst-case and probabilistic analysis of algorithms, and local
search. Polyhedral combinatorics.
@begin(Display)
@i[3 units, Win (Papadimitriou) MW 3:15-4:30]
@end(Display)

@b[365.  Probabilistic Algorithms]∪Construction and
analysis of algorithms that solve various problems
efficiently in a probabilistic sense.  Algorithms
that work almost everywhere.  Expected performance
of heuristic algorithms.  Limitation and 
complexity of probabilistic computations.
Prerequisites: 260, 261, 262, Statistics 116, or
equivalents.
@begin(Display)
@i[3 units, Spr (Yao)
   alternate years, given 1985-86]
@end(Display)

@b[366.  Lower Bounds]∪Techniques for establishing
limits on the possible efficiency of algorithms.
Optimum searching, sorting, merging, selection,
algebraic computation.  Decision trees.  Straight-
line programs.  Logical networks.  Recent results.
Prerequisite: 264 or equivalent.
@begin(Display)
@i[3 units, Aut (Yao) 
   alternate years, given 1985-86]
@end(Display)

@b[367A.  Parallel Computation]∪
Parallel machine models, parallel computation thesis,
interconnection networks, properties of VLSI layouts,
area-time tradeoffs and lower bounds; sorting, routing, and
other basic algorithms and their efficient implementation in
VLSI and multiprocessor networks.  Prerequisites:  261, 264
and 351, or equivalents.
@begin(Display)
@i[3 units, Win (Mayr)]
@end(Display)

@b[367B.  Parallel Computation]∪Principles for
the design of parallel algorithms, systolic architectures
and algorithms, shared memory management; complexity bounds
for parallel computations; P-complete problems and algorithms;
parallel scheduling.  Prerequisite:  367A or equivalent.
@begin(Display)
@i[3 units, Spr (Ullman)]
@end(Display)

@b[368. Computational Geometry]∪Its aim will be to develop skills in the 
design and analysis of geometric algorithms.  The course will emphasize
the data structures of general usefulness in geometric computing and
the conceptual primitives appropriate for manipulating them.  
Specific topics may vary from year to year, including such things
as:  convex hulls; subdivision; point location; intersection and
containment; range searching.
Recommended: 261.
@begin(Display)
@i[3 units, Win (Guibas) TTh 9:30-10:45]
@end(Display)

@b[369.  Topics in Analysis of Algorithms]∪
Advanced material is often
taught for the first time as a "topics" course, perhaps by a
faculty member visisting from another institution.  Students
may therefore enroll repeatedly in a course with this number.  
See the Time Schedule for topics that are currently being offered.
@begin(Display)
@i[Any quarter (Staff) by arrangement]
@end(Display)

@b[371.  Advanced Medical Decision Analysis]∪(Same as MIS 235
and EES 235).  An introduction to advanced topics in decision
analysis for application to medical decisions.  Topics
include influence diagrams, Markov models, probability encoding,
risk attitude assessment, value model design, and computer-based
decision systems.  Emphasis is placed on the use of
decision analytic techniques and their computer-based implementation
in clinical practice.  Students are expected to complete a term
project.  Prerequisites:  EES 221, EES 231; MIS 211A or CS 271
highly recommended.
@begin(Display)
@i[3 units, Spr (Holzman) M 3-5]
@end(Display)

@b[378.  Phenomenological Foundations of Cognition,
Language, and Computation]∪(Same
as Linguistics 237 and VTSS 178.) 
Critical analysis of theoretical foundations of the 
cognitive approach to language, thought, and computation.
Readings contrast the rationalistic assumptions of current
linguistics and artificial intelligence with alternatives
drawn from phenomenology, theoretical biology and 
socially-oriented speech act theory.  Emphasis on the
relevance of theoretical orientation to the design, implementation,
and impact of computer systems, especially those dealing with language.
@begin(Display)
@i[3 units, Aut (Winograd) MWF 10:00]
@end(Display)

@b[379.  Interdisciplinary Topics]∪
Advanced material that relates computer science to other
disciplines is often taught first time as a "topics" course,
perhaps by a faculty member visiting form another institution.
Students may therefore enroll repeatedly in a
course with this number.  Se the Time Schedule for topics
that are currently being offered.
@begin(Display)
@i[by arrangement]
@end(Display)

!@b[393.  Computer Laboratory]∪A substantial computer
program is designed and implemented.  A detailed
written report is required.  Recommended as
preparation for dissertation research.  Intended for
graduate students of Computer Science;  consent of
instructor required.  Register using the section number
associated with the instructor.
@begin(Display)
@i[Any quarter (Staff) by arrangement]
@end(Display)

@b[399.  Independent Project]
@begin(Display)
@i[Any quarter (Staff) by arrangement]
@end(Display)

@b[446.  Distributed Systems]∪Motivation for distributed
systems; asic architecture model; review of layered protocols;
interprocess communication and synchronization; naming;
protection; reliable operation, atomic transactions, multiple
copy update, and error recovery; decentralized control; debugging, 
testing, and measurement; hardware issues.  Specific implementations
will be cited throughout the course.  Significant project will
be included.  Prerequisite:  346.
@begin(Display)
@i[3 units, Spr (Staff)
alternate years, given 1985-86]
@end(Display)

@b[499.  Advanced Reading and Research]∪For
graduate students in Computer Science; consent of
instructor required.  Register using the section number associated
with the instructor.
@begin(Display)
@i[any quarter (Staff) by arrangement]
@end(Display)


!@begin(Heading)
GRADUATE SEMINARS
@end(Heading)


@b[500.  Computer Science Colloquium]∪Presentation of
current research in Computer Science.
@begin(Display)
@i[1 unit, Aut, Win, Spr (Staff) T 4:15]
@end(Display)


@b[510. Digital Reliability Seminar]∪(Enroll in Electrical Engineering
385.) Student-faculty discussions of research problems in the design of
reliable digital systems.  Specific areas include 
fault-tolerant systems, design for testability and system reliability
@i[1 to 4 units, Aut, Win, Spr,  (McCluskey) M 4:15]

!@b[520.  Artificial Intelligence Seminar]
@begin(Display)
@i[1 to 3 units, any quarter (Staff) by arrangement]
@end(Display)

@b[522.  Heuristic Programming Seminar]
@begin(Display)
@i[1 to 3 units, any quarter (Staff) by arrangement]
@end(Display)

@b[523.  Readings in Artificial Intelligence]∪A
series of lectures and discussions on readings in
all areas of artificial intelligence research.
Primarily intended for students planning to take the
A.I. Qualifying exam.  Prerequisites:  223A, 223B and
consent of instructor.
@begin(Display)
@i[3 units, Win (Staff)
   alternate years, given 1985-86]
@end(Display)

@b[527.  Robotics Seminar]∪Recent research in the areas of
computer vision, manipulation, and mobility; geometric modeling
and CAD/CAM. Invited speakers present recent results and
summaries of articles from the current literature.
@begin(Display)
@i[1 unit, Aut, Win, Spr (Binford) M 4:15]
@end(Display)

@b[528.  Learning in Man and Machine]∪(Same as Psychology
295).  Computational methods of learning, covering relevant
current research in both artificial intelligence and
cognitive psychology.  Intended for graduate students in both
fields.  Students give presentations in class on weekly
readings abd submit, as a final paper, a proposal for a research
project.  Prerequisites:  Previous training in either cognitive
psychology or artificial intelligence.

@b[530.  Numerical Analysis Seminar.]
@begin(Display)
@i[1 to 3 units, any quarter (Staff) by arrangement]
@end(Display)

!@b[540.  Seminar on Computer Systems]∪(Enroll in			
Electrical Engineering 380.) Discussion of current
research in the design, implementation, analysis, and use of
computer systems ranging from integrated circuits to operating
systems and programming languages.				
@begin(Display)
@i[1 unit, Aut, Win, Spr (Staff)]
@end(Display)

@b[545.  Database Research Seminar]∪Presentations of current
research and industrial innovation.  Strong emphasis on
discussion and evaluation.  Topics of special interest
include database models, high performance algorithms, and
application of artificial intelligence techniques to large
and distributed databases.  
@begin(Display)
@i[1 to 3 units, Aut, Win Spr (Wiederhold) F 3:15]
@end(Display)



!@b[550.  Theory of Computation Seminar]
@begin(Display)
@i[1 to 3 units, (Staff) by arrangement]
@end(Display)

@b[560.  Analysis of Algorithms Seminar]
@begin(Display)
@i[1 to 3 units, (Staff) by arrangement]
@end(Display)

@b[575.  Artificial Intelligence and Language Seminar]
@begin(Display)
@i[1 to 3 units, (Staff) by arrangement]
@end(Display)


!The following  departments offer courses that
may be of special interest to students of computer
science:


@b[Business]∪Data processing in business problems, science in
management and operations research.

@b[Economics]∪Statistical Methods of Econometrics.

@b[Electrical Engineering]∪Information and communication theory,
theory and design of systems and adaptive design, VLSI design.

@b[Industrial Engineering].∪Management.

@b[Linguistics]∪Syntax, semantics, language theory.

@b[Mathematics]∪Mathematical logic, recursion theory.

@b[Mechanical Engineering]∪Computational geometry, non-machine systems.

@b[Operations Reserach]∪Mathematical programming.

@b[Philosophy]∪Mathematical logic.

@b[Psychology]∪Cognitive Psychology.

@b[Statistics]∪Probability, combinatorics.


@end(Text) @comment(End of No indent mode)
@end(text) @comment (end of first text on line)

-------